#!/usr/bin/env python

from __future__ import print_function
import sys
import io
import re
import argparse

def print_begin(name):
    print('''static struct mtd_partition {0}[] = {{
\t{{
\t\tname:\t"ALL",
\t\tsize:\tMTDPART_SIZ_FULL,
\t\toffset:\t0,
\t}},'''.format(name))

def print_partition(name, start, size):
     print('''\t{{
\t\tname:\t"{0}",
\t\tsize:\t{1},
\t\toffset:\t{2},
\t}},'''.format(name, size, start))

def print_end():
    print('};')

def parse_args(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument("partitions", nargs="*")
    parser.add_argument("-n", "--varname", default="partitions")
    return parser.parse_args()

def main(argv):
    args = parse_args(argv);
    print_begin(args.varname)
    for line in sys.stdin:
        m = re.search(r'\d+\s*=\s*(.*)', line)
        if m:
            fields = re.split(r'[\s,]+', m.group(1))
            if len(args.partitions) == 0 or fields[0] in args.partitions:
                print_partition(fields[0], fields[1], fields[2])
    print_end()

if __name__ == "__main__":
    main(sys.argv)
